package com.qq.first_project.controller.admin;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qq.first_project.common.R;
import com.qq.first_project.entity.User;
import com.qq.first_project.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Qiu
 * @since 2022-03-09
 */
@RestController
@CrossOrigin //跨域
@RequestMapping("/admin/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 分页查找所有或按名称查找
     * @return
     */
    @GetMapping("page-list")
    R list(ModelMap modelMap, @RequestParam("current") int num, @RequestParam("pageSize") int size,@RequestParam("username") String username) {
        Page<User> page= new Page<>(num,size);
        IPage<User> pageList = userService.pageList(page,username);
        modelMap.addAttribute("page", pageList);
        return R.ok().data("data",pageList).message("获取资用户成功");
    }

    /**
     * 根据id查
     * @param id
     * @return
     */
    @GetMapping("getById")
    R getById(Long id) {

        User user = userService.getById(id);
        if(user != null){
            return R.ok().data("data", user);
        }else{
            return R.error().message("数据不存在");
        }
    }

    /**
     * 新增
     * @param user
     * @return
     */
    @PostMapping("save")
    R save(User user){
        boolean result = userService.save(user);
        if (result) {
            return R.ok().message("保存成功");
        } else {
            return R.error().message("保存失败");
        }
    }

    /**
     * 修改
     * @param user
     * @return
     */
    @PostMapping("update")
    R updateById(User user){
        boolean result = userService.updateById(user);
        if(result){
            return R.ok().message("修改成功");
        }else{
            return R.error().message("数据不存在");
        }
    }

    /**
     * 禁用
     * @param id
     * @return
     */
    @PostMapping("disable")
    R disable(Long id ) {
        User user = userService.getById(id);
        user.setDeleted("1");
        boolean result = userService.updateById(user);

        if(result){
            return R.ok().message("禁用成功");
        }else{
            return R.error().message("数据不存在");
        }
    }


    /**
     * 启用
     * @param id
     * @return
     */
    @PostMapping("enable")
    R enable(Long id ) {
        User user = userService.getById(id);
        user.setDeleted("0");
        boolean result = userService.updateById(user);

        if(result){
            return R.ok().message("启用成功");
        }else{
            return R.error().message("数据不存在");
        }
    }

    /**
     * 批量删除
     * @param id
     * @return
     */
    @PostMapping("delByIds")
    R delByIds(Long[] id) {

        boolean result = userService.removeByIds(Arrays.asList(id));
        if(result){
            return R.ok().message("删除成功");
        }else{
            return R.error().message("数据不存在");
        }
    }

}
